/*
 *
 * Copyright (c) 2021
 * User:Dybala
 * File:TaskDao.java
 * Date:2021/11/18 17:54:18
 */

package com.dao;

import com.pojo.*;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

@Mapper
@Repository
public interface TaskDao {
    /**
     * 查询所有任务
     * @return 返回所有待接任务列表
     */
    List<TaskMini> queryAllTask();

    /**
     * 通过id查询详细任务
     * @param id
     * @return
     */
    Task queryById(int id);

    /**
     * 获取该用户的所有任务数量
     * @param email
     * @return
     */
    int countMyTasks(String email);

    /**
     * 添加任务
     * @param task
     */
    void addTask(Task task);

    /**
     * 通过邮箱获取所有待接收任务
     * @param email
     * @return
     */
    List<Task> queryByEmail(String email);

    /**
     * 校验
     * @param email
     * @param id
     * @return
     */
    Task queryByEmailAndId(String email,int id);

    /**
     * 通过id删除任务，只能删除没接受的
     * @param id
     * @return
     */
    int deleteById(int id);

    /**
     * 按类别返回
     * @param tag_id
     * @return
     */
    List<Task> queryByOrder(int tag_id);

    /**
     * 向待接任务表中插入任务编号
     * @param id
     * @return
     */
    int insertToPreTasks(int id);

    /**
     * 删除待解任务表的id
     * @param id
     * @return
     */
    int deletePreTask(int id);

    /***
     * 通过id查询待接收任务表是否存在
     * @param id
     * @return
     */
    Integer queryPreTask(int id);

    int insertToWorking(int id,String customer,String publisher);

    List<PubTask> queryPubByEmail(String email);

    PubTask queryPubByEmailAndId(String email,int id);

    int deleteWorking(String email,int id);

    int insertToFinished(String email,int id);

    List<PubTask> queryFinishedList(String email);

    String queryFinishedPublisherEmailById(int id);
    String queryFinishedCustomerEmailById(int id);
    int writeFeedBack(Comment comment);
    int updateFinishedTaskScore(int id,int score);
    Comment searchComment(int id);
    PubTask queryFinishedPubTaskById(String email,int id);
    int reportToAdmin(Report report);

    Task queryAllById(int id);

    List<Map<String ,Object>> queryFinishedTaskByEmail(String email);
//    List<Map<String,Object>> queryByEmail2(String email);
    int queryReportByEmailAndId(String email,int id,int typeId);

    int updateReportByEmailAndTaskIdAndType(Report report);

    /**
     * 在相应帖子下新增评论
     * @param discussion 评论
     */
    void addDiscussion(Discussion discussion);

    List<Discussion> queryMyDiscussions(int taskId, String email);

    List<Discussion> queryAllDiscussions(int taskId);
    /**
     * 查询正在完成我任务的打工人的列表
     * @param email
     * @return
     */
    List<PubTask> queryMyWorker(String email);
}
